Compressed encoding and decoding technologies for motion-picture signals are used in a variety of applications such as storage, transmission, and so forth, because they can reduce a memory space for storing data of the motion picture information, and can enable the motion picture to be transferred through even a low rate channel. Standards have been proposed for compressing the picture information and for processing motion pictures.
For motion picture processing, the International Telecommunication Union-Telecommunication Standard Sectors (ITU-T) formulated the H.261 and H.263 standards for motion picture service in the environment of wired or wireless communication networks, and the International Standardization Organization (ISO) established the standards of Moving Picture Expert Group (MPEG-1, MPEG-2, and MPEG-4). After the developments of H.263+ and MPEG-4, the rapid spreading of radio (or wireless) communication may provide impetus for reliable standards for motion-picture compression technologies, which can be adapted to various environments of communication and can provide improved compression efficiency. Thus, ITU-T published a “Request for technical proposal” that was given in the name of H.26L as a new-generation coding method, from which many studies have been made by many companies, institutes, and academies. Since the H.26L project in 2001, ITU-T approved the standard of H.264 in May of 2003 and finally approved MPEG-4 Part 10 at ISO/IEC in August of 2003.
The standard H.264 for a new-generation motion-picture compression, being established commonly by ITU-T and ISO, has been improved from the former standards such as MPEG-2 or MPEG-4 (Part 2) in view of the flexibility to adapt to various network environments and the efficiency for encoding motion picture data. According to some appraisals by engineers, a data compression rate by H.264 may be two or three times that of MPEG-2 used in a DVD system and more than 50% or two times that of MPEG-4. With the new technology, it is possible to obtain image quality comparable to a DVD level at the coding rate about 2 Mbps, or comparable to a home VCR level at 1 Mbps.
Applying the technique of H.264 to the practical field of product and service, it may be effective in reducing capacity for image data, which can raise a data transmission rate. And, while MPEG-2 is employed in digital broadcasting systems and MPEG-4 is frequently employed with image transmission by mobile phones, H.264 may be applied first to applications that desire high compression rates.
In a conventional method of coding a motion picture, motion estimation and compensation is performed in the unit of pixel group (M×N) that is formed of M pixels along the horizontal direction and N pixels along the vertical direction, instead of performing the motion estimation and compensation over the whole picture frame. Such a pixel group is referred to as macroblock. A unit size of the macroblock may be defined as being composed of 16 vertical pixels by 16 horizontal pixels (16×16) in a general motion-picture coding scheme.
Meanwhile, the motion estimation and compensation by the new-generation motion-picture coding technique, such as H.264/AVC or MPEG-4 Part 10, may be carried out in the unit of a smaller pixel group. A macroblock mode type is selected in the range of 16×16, 16×8, 8×16, and 8×8, and then the 8×8 mode is classified into subsidiary mode types 8×4, 4×8, and 4×4. Therefore, when blocks of one macroblock are all sized in the unit of 4×4, a motion vector is ranged up to 16 at maximum and the motion estimation and estimation may be performed by each block.
FIG. 1 illustrates a motion vector for a current block E, positions of peripheral blocks A, B, C, and D used in estimating the motion vector of the current block E, and motion vectors for the blocks A˜D. The motion vector of the current block E is obtained by utilizing the motion vectors of its peripheral blocks A, B, and C (or D).
In the description hereinafter, the peripheral blocks A, B, C, and D are positioned around the current block E as shown in FIG. 1. The motion vectors of the current block E and the peripheral blocks A, B, C, and D are denoted to MV_E, MV_A, MV_B, MV_C, and MV_D, respectively.
The motion vector of the peripheral block, which is used in estimating the motion vector MV_E of the current block E, is a motion vector of a block within a peripheral macroblock or a motion vector of a block within a current macroblock in accordance with a position of the current block.
FIGS. 2A through 2C illustrate variation in positions in accordance with mode types and positions of the current block. FIG. 2A shows configuration of the peripheral blocks A˜D used in estimating a motion vector when the current block E is set with 16×16. The motion vectors of the peripheral blocks A˜D are used with motion vectors of blocks included in a peripheral macroblock. FIGS. 2B and 2C illustrate the case that the current macroblock is established in 16×8 mode, the macroblock being divided into small pixel groups E0 and E1. The motion vectors of the peripheral blocks A˜D around the block E0 are used with motion vectors of blocks within a peripheral macroblock as the 16×16 mode. Also, the motion vectors of the peripheral blocks A and D around the block E1 are used with motion vectors of blocks within a peripheral macroblock as the 16×16 mode. But, the motion vector of the peripheral block B around the block E1 is used with a motion vector that is calculated in the block E0 of the current macroblock, different from the cases for the other peripheral blocks.
Further, if the peripheral block C is positioned out of a slice (a group of blocks in a row along the horizontal direction) that is being processed in coding at present or is a block of a macroblock to be coded next to the current macroblock, the peripheral motion vector MV_D instead of MV_C may be used for estimating the current motion vector MV_E together with the peripheral motion vectors MV_A and MV_B.
As such, since it uses the motion vectors of the peripheral blocks A˜D, MV_A˜MV_D, in estimating the motion vector MV_E of the current block E, the motion vectors of blocks within the macroblock previously coded before the current macroblock should be stored in a memory.
Moreover, an H.264/AVC codec was established in a macroblock adaptive frame/field (MBAFF) mode to enhance coding efficiency. FIG. 3A illustrates an example of the MBAFF mode coding a vertical macroblock pair that is referred to as a single super macroblock. In this description, such a macroblock pair in the vertical direction (or column) is referred to as a super macroblock. The macroblock is coded in the frame or field mode when it is not in the MBAFF mode, while the macroblock is able to be coded with a mixed version of the frame and field modes when it is in the MBAFF mode. In general, the normal mode is referred to as one of the frame and normal modes.
FIG. 3B illustrates a super macroblock in a normal mode. In the MBAFF mode shown in FIG. 3A, while a pair of the macroblocks is referred to as a super macroblock, the normal mode regards a single macroblock as a super macroblock.
FIG. 4 comparatively illustrates the cases of coding the super macroblock into the field and frame modes. When macroblocks of the super macroblock are coded into the field mode, the top macroblock of the super macroblock is composed only of odd-numbered pixel lines while the bottom macroblock of the super macroblock is composed only of even-numbered pixel lines. Otherwise, when macroblocks of the super macroblock are coded into the frame mode, the top and bottom macroblocks of the super macroblock are composed without differentiating odd- and even-numbered pixel lines.
In the case of a mixed condition with super macroblocks coded in the field and frame modes in a single picture frame, there may be deformations of the peripheral blocks in accordance with the coded condition of the current and peripheral macroblocks by the field or frame mode and thereby a complicated indexing process may be conducted for obtaining the motion vector MV_E of the current block E. In other words, locations of the peripheral blocks A˜D to estimate the motion vector of the current block E may be variable in accordance with whether the current and peripheral macroblocks have been coded in the frame or field mode and whether the current macroblock is positioned on the top or bottom.
FIGS. 5A through 5C illustrate features of the motion vector MV_A of the left block in accordance with coding modes of the current and peripheral macroblocks. If the current and left macroblocks have been all coded into the frame or field mode, the motion vector MV_A of the left block for the current block E is determined by the pattern shown in FIG. 5A. In other words, the motion vector positioned at the location, to which the arrow designates, is the motion vector MV_A of the left block for the current block E.
Provided that coding modes of the current and left macroblocks are different from each other, i.e., if the current macroblock has been coded in the frame mode while the left macroblock has been coded in the field mode, or the reverse, the motion vector MV_A of the left block is determined after passing through a complicated indexing procedure in accordance with the position of the current block E as shown in FIGS. 5A and 5C.
FIGS. 6A through 6C illustrate a motion vector position of the top block in accordance with coding modes of the current and peripheral macroblocks. In FIGS. 6A through 6C, the top and bottom macroblocks of a current super macroblock are each represented as E_top and E_bottom while the top and bottom macroblocks of an upper super macroblock are each represented as B_top and B_bottom.
As shown in FIG. 6A, if the current super macroblock has been coded in the frame mode, the upper motion vector MV_B of the top macroblock E_top of the current super macroblock is determined by motion vectors of blocks included in the bottom macroblock B_bottom regardless of a coding mode type of the upper super macroblock, while the upper motion vector MV_B of the bottom macroblock B_top of the current super macroblock is determined by motion vectors of blocks included in the top macroblock T_bottom of the current super macroblock.
As shown in FIG. 6B, if the current and upper super macroblocks have been coded in the field mode, the upper motion vector MV_B of the top macroblock E_top of the current super macroblock is determined by motion vectors of blocks included in the top macroblock B_top, while the upper motion vector MV_B of the bottom macroblock E_bottom of the current super macroblock is determined by motion vectors of blocks included in the bottom macroblock B_bottom of the upper super macroblock.
As shown in FIG. 6C, if the current and upper super macroblocks have been coded in the field and frame modes, respectively, the upper motion vectors MV_B of the top and bottom macroblocks E_top and E_bottom of the current super macroblock are determined by motion vectors of blocks included in the bottom macroblock B_bottom of the upper super macroblock.
As well as the upper motion vectors MV_B, the upper left and right motion vectors, MV_C and MV_D, are also selected by the manner as illustrated in FIGS. 6A through 6C, and it is possible to obtain motion vectors of blocks included in the current macroblock by means of the motion vectors MV_A, MV_B, and MV_C (or MV_D).
The motion vector estimation may be performed so as to efficiently code a motion vector by utilizing the fact that characteristics between adjacent motion vectors are generally similar to each other. However, additional memory to store the peripheral motion vectors may be needed, because it refers to the peripheral vectors of blocks included in the peripheral macroblock. Furthermore, in the case of assisting the MBAFF mode, as the motion vectors of the peripheral blocks are distributed in various ranges, a size of the additional memory may become larger. In addition, a complicated indexing procedure for finding the motion vectors of the peripheral blocks may also be needed to estimate the motion vector of the current macroblock in accordance with the coding mode type that is the field or frame mode, or in accordance with whether the macroblock is positioned at the top or the bottom. Therefore, the memory size may become larger and the indexing procedure may become complicated, in independently storing motion vectors of all the macroblocks corresponding to one picture frame or in storing all vectors corresponding to one slice.